草庐IT

iOS。将 block 作为参数传递到 block

全部标签

ruby - 如何在 Sinatra 中使用带斜线的参数?

玩sinatra,我遇到了一个小问题:当我将参数与斜线一起使用时,它会混淆路由器引擎。那么有没有一种无需编码即可处理此类参数的好方法?代码看起来像get'add/:url'do#....end我打算得到像/add/http://sctackoverflow.com/这样的东西工作 最佳答案 您是否尝试过使用splat参数?类似于:get'/add/*'doprotocol=params[:splat].firstaddress=params[:splat][1..-1].join('/')url=protocol+"//"+addr

ruby - 如何测试一个 block 是否为空?

我有一段代码,我想在不运行代码块内部的情况下测试正文是否为空。这可能吗? 最佳答案 sourcifygem添加了一个Proc#to_source方法:>>require'sourcify'=>true>>p=Proc.new{}=>#>>p.to_source=>"proc{}"一旦将block作为字符串,就很容易看出花括号之间是否有注释(或只有空格)。 关于ruby-如何测试一个block是否为空?,我们在StackOverflow上找到一个类似的问题: h

ruby - ruby 中没有参数的 DSL block

我正在用ruby​​编写一个简单的dsl。几周前,我偶然发现了一些博客文章,其中展示了如何转换代码,例如:some_methodargumentdo|book|book.some_method_on_bookbook.some_other_method_on_book:with=>argumentend更简洁的代码:some_methodargumentdosome_method_on_booksome_other_method_on_book:with=>argumentend我不记得如何做到这一点,我也不确定缺点,但更简洁的语法很诱人。有人知道这种转变吗?

ruby - 如何在命令行上将实例变量传递给 HAML 模板?

背景我正在尝试测试Rails之外的一些HAML模板的格式。这个想法是在命令行或通过包含的Ruby文件传递​​一些实例变量,将模板呈现为标准输出。我尝试了几种不同的方法但没有成功,如下所述。需要一个Ruby文件例如,给定以下两个文件:HAML模板:“test.haml”!!!%h1TestingHAMLCLI%p=@bar%p=@bazRuby文件:“test.rb”@foo='abc'@bar='123'我希望像haml-r./testtest.haml这样的调用在标准输出上返回一个内插的HTML文件,但它没有。相反,我只得到HTML:TestingHAMLCLI程序化尝试由于这不起作

ruby-on-rails - 如何使用 block 创建助手?

我想做一个像下面这样的助手。defmy_divsome_options,&block#HowdoIprinttheresultoftheblock?end 最佳答案 你应该使用CaptureHelper.defmy_div(some_options,&block)#capturethevalueoftheblockastringcontent=capture(&block)#concatthevaluetotheoutputconcat(content)endThecontentdefmy_div(some_options,&blo

ruby - 在 block /lambda 中产生问题

我有以下Ruby代码:#func1generatesasequenceofitemsderivedfromx#func2doessomethingwiththeitemsgeneratedbyfunc1deftest(x,func1,func2)func1.call(x)do|y|func2.call(y)endendfunc1=lambdado|x|foriin1..5yieldx*iendendfunc2=lambdado|y|putsyendtest(2,func1,func2)#Shouldprint'2','4','6','8',and'10'这当然行不通。test.rb:1

ruby - 带有临时文件的奇怪的 Ruby IO

这让我发疯。请考虑以下事项:require'open-uri'#setuptempfileextname=File.extnamefile_urlbasename=File.basename(file_url,extname)file=Tempfile.new([basename,extname])#readformURIintotempfileuri=URI.parse(file_url)num_bytes_writen=file.write(uri.read)puts"Wrote#{num_bytes_writen}bytes"#Readingfrommytempfileputs"

带有字符串参数的 Ruby grep

我想将grep与字符串一起用作正则表达式模式。我该怎么做?例子:myArray.grep(/asd/i)#Worksperfectly.但我想先准备好我的声明searchString='/asd/i'myArray.grep(searchString)# Fails我怎样才能做到这一点?我需要准备一个字符串,因为这将进入搜索算法,并且查询将根据每个请求进行更改。谢谢。 最佳答案 正则表达式支持插值,就像字符串一样:var="hello"re=/#{var}/ipre#=>/hello/i

ruby - +@ 作为 ruby​​ 中的方法是什么意思

我正在阅读一些代码,我看到了一些类似的东西moduleMdef+@selfendend我很惊讶这是合法的语法,但是当我在文件上运行ruby-c时(对lint)它说它是有效的。-@也是一个合法的方法名称,但当我尝试*@或d@时,这两个都是非法的。我想知道+@是什么意思,为什么合法? 最佳答案 Ruby包含一些一元运算符,包括+,-,!,~,&和*.与其他运算符一样,您也可以重新定义它们。对于~和!你可以简单地说def~和def!因为它们没有对应的二进制文件(例如,您不能说a!b)。但是对于-和+有一个一元和一个二进制版本(例如a+b和

ruby - 不能使用数组作为 Ruby Hash 的默认值吗?

这个问题在这里已经有了答案:Strange,unexpectedbehavior(disappearing/changingvalues)whenusingHashdefaultvalue,e.g.Hash.new([])(4个答案)关闭7年前。我正在将项目添加到哈希键。我期待得到这样的结构:{'a':[1],'b':[2,3,4]}我使用数组来初始化哈希。irb>hash=Hash.new([])=>{}然后开始使用它:irb>hash['a'][1]irb>hash['b'][1,2]但事实证明:irb>hash=>{}